home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Leonardo the Inventor
/
Leonardo The Inventor (93026)(Broderbund)(Riverdeep)(2004).iso
/
LEOWINMV
/
DATABASE.DIR
/
00109_Script_Generate AlphabetLineStarts
< prev
next >
Wrap
Text File
|
1996-03-28
|
4KB
|
124 lines
-- --------------------------------------------------------------
-- Handler generateBrowserAlphabetTopicStarts puts info into the field
-- "AlphabetLineStarts" which contains the line in the browser
-- that each letter in the alphabet begins.
on generateBrowserAlphabetTopicStarts numLinesPerTopic
if voidP(numLinesPerTopic) then
set numLinesPerTopic = 1
end if
set browserTopics = field "browserTopics"
set numLines = the number of lines in browserTopics
set numTopics = (numLines - (numLines/numLinesPerTopic -1)) / numLinesPerTopic
put EMPTY into field "AlphabetLineStarts"
set curLine = 1
set oldLetter = "a"
set startLine = 1
-- go through the browser topics one by one
repeat while (curLine <= numLines)
set curTopic = line curLine of browserTopics
put curTopic
set curLetter = convertToLower(char 1 of curTopic)
put "checking" && curLetter && "line" && curLine
if (curTopic <> EMPTY) then
if (curLetter <> oldLetter) then
-- new letter
put "NEW LETTER:" && curLetter
put oldLetter & "," & startLine into line (charToNum(oldLetter) - 96) of field "AlphabetLineStarts"
set startLine = curLine
set oldLetter = curLetter
end if -- new letter
end if -- curTopic <> EMPTY
set curLine = getNextTopicStartLine(curLine, numLinesPerTopic)
end repeat -- going through the topics
put oldLetter & "," & startLine into line (charToNum(oldLetter) - 96) of field "AlphabetLineStarts"
end
-- --------------------------------------------------------------
-- Handler getNextTopicStartLine
on getNextTopicStartLine curLine, numLinesPerTopic
if (numLinesPerTopic = 1) then -- no return between lines
return curLine + 1
else
return curLine + numLinesPerTopic + 1 -- +1 for the RETURN
end if
end
-- --------------------------------------------------------------
-- Handler generateMediaAlphabetTopicStarts
on generateMediaAlphabetTopicStarts numLinesPerTopic
if voidP(numLinesPerTopic) then
set numLinesPerTopic = 1
end if
set topics = field "mediaTopics"
set numLines = the number of lines in topics
set numTopics = (numLines - (numLines/numLinesPerTopic -1)) / numLinesPerTopic
set curLine = 1
set oldLetter = "a"
set startLine = 1
-- go through the topics one by one
repeat while (curLine <= numLines)
set curTopic = line curLine of topics
put curTopic
set curLetter = convertToLower(char 1 of curTopic)
put "checking" && curLetter && "line" && curLine
if (curTopic <> EMPTY) then
if (curLetter <> oldLetter) then
-- new letter
put "NEW LETTER:" && curLetter
put "," & startLine after line (charToNum(oldLetter) - 96) of field "AlphabetLineStarts"
set startLine = curLine
set oldLetter = curLetter
end if -- new letter
end if -- curTopic <> EMPTY
set curLine = getNextTopicStartLine(curLine, numLinesPerTopic)
end repeat -- going through the topics
put "," & startLine after line (charToNum(oldLetter) - 96) of field "AlphabetLineStarts"
end
-- --------------------------------------------------------------
-- Handler convertToLower returns the given letter in lowercase.
on convertToLower whichLetter
set numLowerA = charToNum("a")
set numCapA = charToNum("A")
set numWhichLetter = charToNum(whichLetter)
set difference = numLowerA - numCapA
if (numWhichLetter >= numLowerA) then
return whichLetter
else
return numToChar(numWhichLetter + difference)
end if
end
-- --------------------------------------------------------------
-- Handler generateBrowerTopics generates the list of topics
-- from the text cast members,
-- and puts them in the browser
on generateBrowserTopics firstCast, lastCast
put EMPTY into field "browserTopics"
repeat with i = firstCast to lastCast
set name = the name of cast i
set numWords = the number of words in name
put word 1 to numWords - 1 of name & RETURN after field "browserTopics"
end repeat
end